using MediatR;
using S.O.ErrorCode;

namespace S.O.Api.Read.Application.Command.Medical
{
    /// <summary>
    /// 获取医生列表命令
    /// 用于挂号时的医生选择
    /// </summary>
    public class GetDoctorListCommand : IRequest<APIResult<List<DoctorDto>>>
    {
        /// <summary>
        /// 科室名称（可选，用于筛选特定科室的医生）
        /// </summary>
        public string? Department { get; set; }
        
        /// <summary>
        /// 是否只返回在职医生
        /// </summary>
        public bool OnlyActive { get; set; } = true;
    }
    
    /// <summary>
    /// 医生信息DTO
    /// </summary>
    public class DoctorDto
    {
        /// <summary>
        /// 医生ID
        /// </summary>
        public long Id { get; set; }
        
        /// <summary>
        /// 医生工号
        /// </summary>
        public string DoctorCode { get; set; } = string.Empty;
        
        /// <summary>
        /// 医生姓名
        /// </summary>
        public string DoctorName { get; set; } = string.Empty;
        
        /// <summary>
        /// 职称
        /// </summary>
        public string Title { get; set; } = string.Empty;
        
        /// <summary>
        /// 所属科室
        /// </summary>
        public string Department { get; set; } = string.Empty;
        
        /// <summary>
        /// 专业特长
        /// </summary>
        public string Specialty { get; set; } = string.Empty;
        
        /// <summary>
        /// 医生简介
        /// </summary>
        public string Introduction { get; set; } = string.Empty;
        
        /// <summary>
        /// 挂号费用
        /// </summary>
        public decimal RegistrationFee { get; set; }
        
        /// <summary>
        /// 工作状态
        /// </summary>
        public string WorkStatus { get; set; } = string.Empty;
    }
}